package com.hbnu.system.model.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.hbnu.system.config.PostDeserializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * <p>
 * 
 * </p>
 *
 * @author ${author}
 * @since 2023-05-16
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("patent")
public class Patent implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键 专利编号
     */
    @ApiModelProperty(value = "主键")
    @TableId(value = "PatentID", type = IdType.ASSIGN_ID)
    private String PatentID;

    /**
     * 统计分类
     */
    @ApiModelProperty(value = "统计分类")
    @TableField("classifi")
    private String classifi;

    /**
     * 所属机构
     */
    @ApiModelProperty(value = "所属机构")
    @TableField("organization")
    private String organization;

    /**
     * 专利号
     */
    @ApiModelProperty(value = "专利号")
    @TableField("patentNumber")
    private String patentNumber;


    /**
     * 专利名称
     */
    @ApiModelProperty(value = "专利名称")
    @TableField("patentName")
    private String patentName;

    /**
     * 专利类型
     */
    @ApiModelProperty(value = "专利类型")
    @TableField("patentCate")
    private String patentCate;

    /**
     * 专利权人
     */
    @ApiModelProperty(value = "专利权人")
    @TableField("patentee")
    private String patentee;

    /**
     * 技术领域
     */
    @ApiModelProperty(value = "技术领域")
    @TableField("technology")
    private String technology;

    /**
     * 所属院系
     */
    @ApiModelProperty(value = "所属院系")
    @TableField("dept")
    private String dept;

    /**
     * 申报日期
     */
    @ApiModelProperty(value = "申报日期")
    @TableField("declarationDate") //fill = FieldFill.INSERT 自动填入
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate declarationDate;

    /**
     * 授权日期
     */
    @ApiModelProperty(value = "授权日期")
    @TableField("authorizationDate") //fill = FieldFill.INSERT 自动填入
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate authorizationDate;
    /**
     * 第一作者
     */
    @ApiModelProperty(value = "第一作者")
    @TableField("leadAuthor")
    private String leadAuthor;
    /**
     * 通讯作者
     */
    @ApiModelProperty(value = "通讯作者")
    @TableField("correspondingAuthor")
    private String correspondingAuthor;
    /**
     * 终止日期
     */
    @ApiModelProperty(value = "终止日期")
    @TableField("endDate") //fill = FieldFill.INSERT 自动填入
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate endDate;

    /**
     * 申请国家或地区
     */
    @ApiModelProperty(value = "申请国家或地区")
    @TableField("applyCountry")
    private String applyCountry;

    /**
     * 法律状态
     */
    @ApiModelProperty(value = "法律状态")
    @TableField("legalState")
    private String legalState;

    /**
     * 证明材料（附件
     */
    @ApiModelProperty(value="证明材料（附件")
    @JsonDeserialize(using = PostDeserializer.class)
    private byte[] annex;

    /**
     * 简介
     */
    @ApiModelProperty(value = "简介")
    @TableField("introduction")
    private String introduction;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    @TableField("notes")
    private String notes;

    /**
     * 录入人
     */
    @ApiModelProperty(value = "录入人")
    @TableField("entered")
    private String entered;


    /**
     * 录入日期
     */
    @ApiModelProperty(value = "录入日期")
    @TableField("enteredDate") //fill = FieldFill.INSERT 自动填入
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime enteredDate;

    /**
     * 所有作者
     */
    @ApiModelProperty(value = "所有作者")
    @TableField("allAuthor")
    private String allAuthor;

    /**
     * 关联项目
     */
    @ApiModelProperty(value = "关联项目")
    @TableField("associatedProjects")
    private String associatedProjects;

    /**
     * 审核结果
     */
    @ApiModelProperty(value = "审核结果")
    @TableField("status")
    private String status;

    /**
     * 未通过原因
     */
    @ApiModelProperty(value="未通过原因")
    @TableField(value = "reason")
    private String reason;

    /**
     * 量化得分
     */
    @ApiModelProperty(value="量化得分")
    @TableField(value = "score")
    private float score;




}
